競技プログラミングでバグった時のためのチェックリスト: 再帰DFS ・ バックトラック法 ( 手順 の 全探索 など)
from 競技プログラミングでバグった時のためのチェックリスト
競技プログラミングでバグった時のためのチェックリスト:再帰DFS・バックトラック法(手順の全探索など)
ABC349 E - Weighted Tic-Tac-Toe
状態の評価は、状態遷移辺ループの前でやる
手順選びは基本的に状態遷移辺を選ぶループの中でやってしまう
つまり、どの手順を選ぶかの情報は
どこでリセットすればよいか、その対応関係も見えやすくなる。
set, mapをiterableとして使う時には、ループ中で変更を行っていないか
手順を一手戻す時は、returnをする前に行う。
code:cpp
// FIXED: dfsを終えた後は、コマを取り除く必要がある。
// FIXED: かつ、returnする可能性があるコードの前で状態をリセットしなくてはならない。
statusnext_inext_j = 0;
出力後の結果の扱いを間違えていないか?
code:cpp
// FIXED: dfsの出力に == 1をつけるの忘れてた てへぺろ☆
std::cout << (dfs(1, 0, 0, placable) == 1 ? "Takahashi" : "Aoki") << std::endl;